package de.fhb.formel1.dbhibernate.persistence;

// Generated 14.01.2010 11:25:02 by Hibernate Tools 3.2.2.GA

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * Rennen generated by hbm2java
 */
@Entity
@Table(name = "Rennen")
public class Rennen implements java.io.Serializable {

	private Date datum;
	private Rennfahrer rennfahrerPole;
	private Saison saison;
	private Rennstrecke rennstrecke;
	private Rennfahrer rennfahrerSchnellsteRunde;
	private Set<Gefahrenvon> gefahrenvon = new HashSet<Gefahrenvon>(0);

	Rennen() {
	}

	public Rennen(Date datum, Saison saison, Rennstrecke rennstrecke) {
		this.datum = datum;
		this.saison = saison;
		this.rennstrecke = rennstrecke;
	}

	public Rennen(Date datum, Rennfahrer rennfahrerPole,
			Saison saison, Rennstrecke rennstrecke,
			Rennfahrer rennfahrerSchnellsteRunde,
			Set<Gefahrenvon> gefahrenvon) {
		this.datum = datum;
		this.rennfahrerPole = rennfahrerPole;
		this.saison = saison;
		this.rennstrecke = rennstrecke;
		this.rennfahrerSchnellsteRunde = rennfahrerSchnellsteRunde;
		this.gefahrenvon = gefahrenvon;
	}

	@Id
	@Temporal(TemporalType.DATE)
	@Column(name = "Datum", unique = true, nullable = false, length = 10)
	public Date getDatum() {
		return this.datum;
	}

	public void setDatum(Date datum) {
		this.datum = datum;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "PoleFahrerID")
	public Rennfahrer getRennfahrerPole() {
		return this.rennfahrerPole;
	}

	public void setRennfahrerPole(Rennfahrer rennfahrerPole) {
		this.rennfahrerPole = rennfahrerPole;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "Jahr", nullable = false)
	public Saison getSaison() {
		return this.saison;
	}

	public void setSaison(Saison saison) {
		this.saison = saison;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "StreckenID", nullable = false)
	public Rennstrecke getRennstrecke() {
		return this.rennstrecke;
	}

	public void setRennstrecke(Rennstrecke rennstrecke) {
		this.rennstrecke = rennstrecke;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "SchnellsteRundeID")
	public Rennfahrer getRennfahrerSchnellsteRunde() {
		return this.rennfahrerSchnellsteRunde;
	}

	public void setRennfahrerSchnellsteRunde(
			Rennfahrer rennfahrerSchnellsteRunde) {
		this.rennfahrerSchnellsteRunde = rennfahrerSchnellsteRunde;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "rennen")
	public Set<Gefahrenvon> getGefahrenvon() {
		return this.gefahrenvon;
	}

	public void setGefahrenvon(Set<Gefahrenvon> gefahrenvon) {
		this.gefahrenvon = gefahrenvon;
	}

}
